GpH: An Architecture-independent Functional Language
نویسندگان
چکیده
In principle, pure functional languages promise straightforward architecture-independent parallelism. We investigate the validity of this claim in the context of our highly-portable implementation of an implicitly-parallel functional language: the GUM implementation of Glasgow Parallel Haskell (GpH). We discuss architecture independence at two levels: low-level (i.e. the implementation) and high-level (i.e. the programmer). Low-level architecture independence is achieved by chosing a message-passing model for GUM, and implementing it using portable C and a widely-supported message-passing library like PVM. In fact GUM is largely independent of the message-passing library, and has been adapted to use MPI and the CM-5 CMMD libraries as well as PVM. As a result, GUM is easily ported, and is currently available on six??? platforms including shared-memory machines, distributed-memory machines, and networks of workstations. We provide indicative measurements of how eecient and eeective our architecture-independent runtime system is across a range of architectures. The GpH programming model provides higher-level architecture independence. The par-allelism in GpH is mainly implicit, and hence relatively small parts of the program need to be changed for a new architecture. The coordination that is required is expressed with a new high-level construct, evaluation strategies. Evaluation strategies provide a clean separation between algorithm and coordination, easing the task of changing either facet to suit new parallel environments. Moreover, GpH programs can systematically be developed for multiple target architectures, using a suite of simulation, prooling and visualisation tools. Much of the development is architecture-independent but, once a particular target architecture has been selected, the tools are parameterised to support tuning for that architecture architecture. We demonstrate the systematic development of two real programs to the point of achieving good speedups and scale-ups on two??? architectures.
منابع مشابه
Low level Architecture - independence of Glasgow ParallelHaskell ( GpH )
In principle, pure functional languages promise straightforward architecture-independent parallelism. We investigate the validity of this claim in the context of our highly-portable implementation of an implicitly-parallel functional language: the GUM implementation of Glasgow Parallel Haskell (GpH). We focus here on the low-level architecture independence of GUM: the high-level architecture in...
متن کاملGpH and Eden: Comparing two parallel functional languages on a Beowulf cluster
We investigate two similar but contrasting parallel functional language designs: Eden and GPH. Both languages use the non-strict functional language Haskell as a core expression language, both are implemented as extensions of the high performance Glasgow Haskell Compiler (GHC), and both implementations are available on the same distributed architecture: a Beowulf cluster. This allows an excepti...
متن کاملFrom GranSim to Paradise
We describe PARADISE (PARAllel DIstribution Simulator for Eden) a simulator developed to proole the execution of programs written in the parallel functional programming language Eden BLOMP96], BLOMP97]. Eden extends the lazy functional language Haskell by syntactic constructs to explicitly deene processes. Paradise is a substantial modiication of GranSim HLP94], Loi96], Loi98], a tool to study ...
متن کاملParallel Skeletons In Glasgow Distributed Haskell
Parallel programming is an important tool when trying to handle large problems that can not be dealt with using conventional single processors systems; either parallel machines or clusters of machines are used to provide the computational power needed. However parallel programming is an inherently difficult task and any tool or language that can provide suitable abstractions making the programm...
متن کاملArchitecture aware parallel programming in Glasgow parallel Haskell (GPH)
General purpose computing architectures are evolving quickly to become manycore and hierarchical: i.e. a core can communicate more quickly locally than globally. To be effective on such architectures, programming models must be aware of the communications hierarchy. This thesis investigates a programming model that aims to share the responsibility of task placement, load balance, thread creatio...
متن کامل